or 和 and

您所在的位置:网站首页 mybatisplus and or查询 or 和 and

or 和 and

2023-04-02 12:15| 来源: 网络整理| 查看: 265

or 和 and 云服务器 ECS 2核4G 3个月1折,1年4折 云服务器低至 0.21元/天,爆款云服务器 s6 1核1G 云服务器特惠 爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情

注意:本教程使用的数据库脚本、数据模型和环境信息请参考 “MyBatis Plus环境准备” 章节,点击下载示例源码。

本文将介绍 or 和 and 条件器,它们定义如下:

or(或,拼接SQL的 OR 语句)or() or(boolean condition)

参数说明:

condition:用于指定当前这个条件是否有效;如果为 true,则应用当前条件;如果为 false,则忽略当前条件。

注意:主动调用 or 表示紧接着下一个方法不是用 and 连接!(不调用or则默认为使用and连接)

实例:构建一个查询用户 id 等于1,或者用户名称为“张三”的查询条件,代码如下:

QueryWrapper wrapper = new QueryWrapper(); wrapper.eq("id",1); wrapper.or(); wrapper.eq("name","老王");

上面查询条件对应的 SQL 语句为“id = 1 or name = '老王'”。

or 嵌套or(Consumer consumer) or(boolean condition, Consumer consumer)

参数说明:

consumer:构造查询条件的回调接口,你需要实现 accept 方法

condition:用于指定当前这个条件是否有效;如果为 true,则应用当前条件;如果为 false,则忽略当前条件。

实例:构造性别(sex)为 null,或者 sex='男' 且 薪水在 5000~6000 之间的用户信息,如下:

QueryWrapper wrapper = new QueryWrapper(); wrapper.isNull("sex"); wrapper.or(new Consumer() {     @Override     public void accept(QueryWrapper userBeanQueryWrapper) {         userBeanQueryWrapper.eq("sex", "男")             .between("salary", 5000, 6000);     } });and(与,and 嵌套)and(Consumer consumer) and(boolean condition, Consumer consumer)

参数说明:

consumer:构造查询条件的回调接口,你需要实现 accept 方法

condition:用于指定当前这个条件是否有效;如果为 true,则应用当前条件;如果为 false,则忽略当前条件。

实例:构造 sex 等于“男”,薪水在 5000~6000之间,年龄大于30,且姓“黄”的用户信息,如下:

QueryWrapper wrapper = new QueryWrapper(); wrapper.and(new Consumer() {     @Override     public void accept(QueryWrapper userBeanQueryWrapper) {         userBeanQueryWrapper.eq("sex", "男")             .between("salary", 5000, 6000);     } }); wrapper.and(new Consumer() {     @Override     public void accept(QueryWrapper userBeanQueryWrapper) {         userBeanQueryWrapper.gt("age", 30)             .likeRight("name", "黄");     } });示例代码

(1)and 实例

package com.hxstrive.mybatis_plus.simple_mapper.condition; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.hxstrive.mybatis_plus.mapper.SimpleMapper; import com.hxstrive.mybatis_plus.model.UserBean; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.util.List; import java.util.function.Consumer; @RunWith(SpringRunner.class) @SpringBootTest class Condition17Test {     @Autowired     private SimpleMapper simpleMapper;     @Test     void contextLoads() {         QueryWrapper wrapper = new QueryWrapper();         wrapper.and(new Consumer() {             @Override             public void accept(QueryWrapper userBeanQueryWrapper) {                 userBeanQueryWrapper.eq("sex", "男")                     .between("salary", 5000, 6000);             }         });         wrapper.and(new Consumer() {             @Override             public void accept(QueryWrapper userBeanQueryWrapper) {                 userBeanQueryWrapper.gt("age", 30)                     .likeRight("name", "黄");             }         });         List userBeanList = simpleMapper.selectList(wrapper);         System.out.println("result size=" + userBeanList.size());     } }

运行上面代码,输出结果如下:

Preparing: SELECT user_id,name,sex,age,face,salary,borthday FROM user WHERE ((sex = ? AND salary BETWEEN ? AND ?) AND (age > ? AND name LIKE ?)) Parameters: 男(String), 5000(Integer), 6000(Integer), 30(Integer), 黄%(String) result size=0

(2)or 实例

package com.hxstrive.mybatis_plus.simple_mapper.condition; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.hxstrive.mybatis_plus.mapper.SimpleMapper; import com.hxstrive.mybatis_plus.model.UserBean; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.util.List; import java.util.function.Consumer; @RunWith(SpringRunner.class) @SpringBootTest class Condition18Test {     @Autowired     private SimpleMapper simpleMapper;     @Test     void contextLoads() {         QueryWrapper wrapper = new QueryWrapper();         wrapper.isNull("sex");         // 根据 sex 和 salary 进行查询         wrapper.or(new Consumer() {             @Override             public void accept(QueryWrapper userBeanQueryWrapper) {                 userBeanQueryWrapper.eq("sex", "男")                     .between("salary", 5000, 6000);             }         });         // 根据 age 和 name 进行查询         wrapper.or(new Consumer() {             @Override             public void accept(QueryWrapper userBeanQueryWrapper) {                 userBeanQueryWrapper.gt("age", 30)                     .likeRight("name", "黄");             }         });         List userBeanList = simpleMapper.selectList(wrapper);         System.out.println("result size=" + userBeanList.size());     } }

运行上面代码,输出结果如下:

Preparing: SELECT user_id,name,sex,age,face,salary,borthday FROM user WHERE (sex IS NULL OR (sex = ? AND salary BETWEEN ? AND ?) OR (age > ? AND name LIKE ?)) Parameters: 男(String), 5000(Integer), 6000(Integer), 30(Integer), 黄%(String) result size=65

上面就是 and 和 or 条件的简单用法。

上一章:group by 分组 下一章:@TableName 说说我的看法 全部评论() 没有评论


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3